// exports.LayoutUtil = void 0;
// var o = (function () {
//     function e() {}
//     e.jisuan_chuizhi_buju = function (e, t, n, o, i, r, a, s) {
//         if (void 0 === o) {
//             o = 1;
//         }
//         if (void 0 === i) {
//             i = 0;
//         }
//         if (void 0 === r) {
//             r = 0;
//         }
//         if (void 0 === a) {
//             a = 0;
//         }
//         if (void 0 === s) {
//             s = 0;
//         }
//         return [(e % o) * (t + i) + a, -Math.floor(e / o) * (n + r) - s];
//     };
//     e.jisuan_shuiping_buju = function (e, t, n, o, i, r, a, s) {
//         if (void 0 === o) {
//             o = 1;
//         }
//         if (void 0 === i) {
//             i = 0;
//         }
//         if (void 0 === r) {
//             r = 0;
//         }
//         if (void 0 === a) {
//             a = 0;
//         }
//         if (void 0 === s) {
//             s = 0;
//         }
//         return [Math.floor(e / o) * (t + i) + a, (-e % o) * (n + r) - s];
//     };
//     e.shezhi_pivot_smart = function (t, n, o, i) {
//         if (void 0 === i) {
//             i = !1;
//         }
//         var r = n - t.anchorX;
//         var a = o - t.anchorY;
//         t.anchorX = n;
//         t.anchorY = o;
//         var s = r * t.width;
//         var c = a * t.height;
//         t.x += s;
//         t.y += c;
//         t.children.forEach(function (t) {
//             t.x -= s;
//             t.y -= c;
//             if (i) {
//                 e.shezhi_pivot_smart(t, n, o);
//             }
//         });
//     };
//     return e;
// })();
// exports.LayoutUtil = o;


exports.LayoutUtil = void 0;

/**
 * 布局实用类，用于计算垂直和水平布局位置以及设置节点枢轴。
 */
class LayoutUtil {
    /**
     * 计算垂直布局的位置
     * @param {number} index - 索引
     * @param {number} width - 元素宽度
     * @param {number} height - 元素高度
     * @param {number} [columns=1] - 列数，默认为1。
     * @param {number} [paddingX=0] - 水平方向的额外间距。
     * @param {number} [paddingY=0] - 垂直方向的额外间距。
     * @param {number} [offsetX=0] - X轴方向的偏移
     * @param {number} [offsetY=0] - Y轴方向的偏移
     * @returns {Array<number>} 返回元素相对于布局的x和y坐标
     */
    static jisuan_chuizhi_buju(index, width, height, columns = 1, paddingX = 0, paddingY = 0, offsetX = 0, offsetY = 0) {
        const x = (index % columns) * (width + paddingX) + offsetX;
        const y = -Math.floor(index / columns) * (height + paddingY) - offsetY;
        return [x, y];
    }

    /**
     * 计算水平布局的位置
     * @param {number} index - 索引
     * @param {number} width - 元素宽度
     * @param {number} height - 元素高度
     * @param {number} [rows=1] - 行数，默认为1。
     * @param {number} [paddingX=0] - 水平方向的额外间距。
     * @param {number} [paddingY=0] - 垂直方向的额外间距。
     * @param {number} [offsetX=0] - X轴方向的偏移
     * @param {number} [offsetY=0] - Y轴方向的偏移
     * @returns {Array<number>} 返回元素相对于布局的x和y坐标
     */
    static jisuan_shuiping_buju(index, width, height, rows = 1, paddingX = 0, paddingY = 0, offsetX = 0, offsetY = 0) {
        const x = Math.floor(index / rows) * (width + paddingX) + offsetX;
        const y = (-index % rows) * (height + paddingY) - offsetY;
        return [x, y];
    }

    /**
     * 智能设置节点的枢轴并调整其位置
     * @param {any} node - 节点对象
     * @param {number} anchorX - X轴的锚点
     * @param {number} anchorY - Y轴的锚点
     * @param {boolean} [recursive=false] - 是否递归设置子节点的枢轴
     */
    static shezhi_pivot_smart(node, anchorX, anchorY, recursive = false) {
        const deltaX = anchorX - node.anchorX;
        const deltaY = anchorY - node.anchorY;
        node.anchorX = anchorX;
        node.anchorY = anchorY;
        const offsetX = deltaX * node.width;
        const offsetY = deltaY * node.height;
        node.x += offsetX;
        node.y += offsetY;
        node.children.forEach(child => {
            child.x -= offsetX;
            child.y -= offsetY;
            if (recursive) {
                LayoutUtil.shezhi_pivot_smart(child, anchorX, anchorY);
            }
        });
    }
}

exports.LayoutUtil = LayoutUtil;